﻿<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Pagos.aspx.cs" MasterPageFile="MasterPage.Master" Inherits="Web.Pages.Pagos" %>

<asp:Content ID="mainContent" ContentPlaceHolderID="MainContent" runat="Server" >

    <!-- Estilos -->
    <style type="text/css" >
        #dialogEnviarReclamo label
        {
            font-weight: bold;
        }
    </style>
    <!-- Fin de [Estilos] -->

    <!-- $(document).ready -->  
    <script type="text/javascript" >

        var _periodoActual          = [];
        var _periodoAnterior        = [];

        var _proyectosPendientes    = [];
        var _proyectosPagados       = [];

        var controles = { General: {}, Filtro: {}, Tablas: { PendientesDePago: {}, Pagados: {} }, Dialogos: { EnviarReclamo: {} } };
        /* General */
        controles.General.EstadoPago = "<%= selEstadoPago.ClientID %>";
        /* Tablas */
        controles.Tablas.PendientesDePago =
        {
            Id: "tblGuionesPendientesDePago",
            Title: "", //titleFormat.format("Guiones".toUpperCase(), "Pendientes de pago".toUpperCase()),
            Totales: { ImporteTotal: { Valor: "<%= txtTotalImporte_PendientesDePago.ClientID %>", Texto: "lblTotalImporte_PendientesDePago" }, CantidadPagos: { Valor: "<%= txtCantidadPagos_PendientesDePago.ClientID %>", Texto: "lblCantidadPagos_PendientesDePago" } },
            LoadComplete: false,
            btnGenerarPlanillaPagoActores: "btnGenerarPlanillaPagoActores",
            btnGenerarPlanillaPagoStaff: "btnGenerarPlanillaPagoStaff"
        };
        controles.Tablas.Pagados =
        {
            Id: "tblGuionesPagados",
            Title: "", //titleFormat.format("Guiones".toUpperCase(), "Pagados".toUpperCase());
            Totales: { ImporteTotal: { Valor: "<%= txtTotalImporte_Pagados.ClientID %>", Texto: "lblTotalImporte_Pagados" }, CantidadPagos: { Valor: "<%= txtCantidadPagos_Pagados.ClientID %>", Texto: "lblCantidadPagos_Pagados" } },
            LoadComplete: false,
        };
        /* Filtro */
        controles.Filtro =
        {
            PeriodoDesde : "txtPeriodo_Desde",
            PeriodoHasta : "txtPeriodo_Hasta"
        };
        /* Dialogos */
        controles.Dialogos.Reclamo =
        {
            Id: "dialogEnviarReclamo",
            Title: "Generar Reclamo",
            IdPago: "txtDialogoReclamo_IdPago",
            IdGuion: "txtDialogoReclamo_IdGuion",
            Guion: "txtDialogoReclamo_Guion",
            Asunto: "txtDialogoReclamo_Asunto",
            Descripcion: "txtDialogoReclamo_Descripcion",
            btnEnviar: "btnEnviarReclamo"
        };
        datePick = function (elem) {
            jQuery(elem).datepicker();
            //jQuery(elem).datepicker( { minDate: -20, maxDate: "+1M +10D" } );
        }
        $(document).ready(function ()
        {
            procesarParametros();
            cargarPagina_Pagos();
        });
        function procesarParametros() {
            Framework.Page.Parameters.parseQueryString();
        }
        function cargarPagina_Pagos() {
            Site.Messages.showLoadingMessage();

            var esAdmin = validarPermisosAdmin(_CurrentUser.Tipo);

            Site.Page.setTitle( esAdmin ? "Pagos" : "Guiones" );

            $("#" + controles.Tablas.PendientesDePago.Totales.CantidadPagos.Texto).text( esAdmin ? "Cant. trabajos" : "Trabajos pendientes de pago" );
            $("#" + controles.Tablas.PendientesDePago.Totales.ImporteTotal.Texto).text( esAdmin ? "Importe por pagar" : "Importe por cobrar" );
            $("#" + controles.Tablas.Pagados.Totales.CantidadPagos.Texto).text( esAdmin ? "Cant. trabajos" : "Trabajos cobrados" );
            $("#" + controles.Tablas.Pagados.Totales.ImporteTotal.Texto).text( esAdmin ? "Últimos pagos realizados" : "Últimos pagos recibidos" );

            $("#pnlGrillas_PendientesDePago").html( esAdmin ? "PENDIENTES DE PAGO" : "PENDIENTES DE PAGO" );
            $("#pnlGrillas_Pagados").html( esAdmin ? "PAGADOS" : "COBRADOS" );

            var txtPeriodos = $("#{0}, #{1}".format(controles.Filtro.PeriodoDesde, controles.Filtro.PeriodoHasta));
                txtPeriodos.datepicker();

            if (!validarTipoUsuario(_CurrentUser.Tipo, _TiposUsuario.Actor)) {
                txtPeriodos.change
                (
                    function () {
                        //display("Selected date: " + dateText + "; input's current value: " + this.value);
                        var desde = $("#{0}".format(controles.Filtro.PeriodoDesde)).datepicker("getDate");
                        var hasta = $("#{0}".format(controles.Filtro.PeriodoHasta)).datepicker("getDate");
                        obtenerPeriodo(_periodoActual, hasta);
                        obtenerPeriodo(_periodoAnterior, desde);
                        Helpers.jqGridHelper.reloadGrid("{0}_Grid".format(controles.Tablas.EnGrabacion.Id));
                        Helpers.jqGridHelper.reloadGrid("{0}_Grid".format(controles.Tablas.Finalizados.Id));
                    }
                );
            }
            else {
                txtPeriodos.attr("readonly", "readonly");
                txtPeriodos.datepicker("option", "disabled", true);
            }
            
            if ( !validarPermisosAdmin(_CurrentUser.Tipo) )
                Framework.Page.Parameters.idProveedor = _CurrentUser.Id;

            calcularPeriodos();

            inicializarDialogoReclamo();

            /* Tablas */
            controles.Tablas.PendientesDePago.Title = esAdmin ? "Pendientes de pago" : "Grabados";
            controles.Tablas.Pagados.Title = esAdmin ? "Pagados" : "Cobrados";

            inicializarGrillaPagos(controles.Tablas.PendientesDePago, _EstadosPago.PENDIENTE_DE_PAGO, grillaPagosGuionesPendientesDePago_LoadFilters);
            inicializarGrillaPagos(controles.Tablas.Pagados, _EstadosPago.PAGADO, grillaPagosGuionesPagados_LoadFilters);

            if ( validarPermisosAdmin(_CurrentUser.Tipo) )
            {
                var btnGenerarPlanillaPagoActores = $("#" + controles.Tablas.PendientesDePago.btnGenerarPlanillaPagoActores);
                    btnGenerarPlanillaPagoActores.click(function () { generarPlanillaPagoActores(); });
                    btnGenerarPlanillaPagoActores.parent().fadeIn();

                var btnGenerarPlanillaPagoStaff = $("#" + controles.Tablas.PendientesDePago.btnGenerarPlanillaPagoStaff);
                    btnGenerarPlanillaPagoStaff.click(function () { generarPlanillaPagoStaff(); });
                    btnGenerarPlanillaPagoStaff.parent().fadeIn();
            }

            Site.Messages.hideLoadingMessage();
        }
        function generarPlanillaPagoActores()
        {
            var idsPagos = new Array();            
            var ids = Helpers.jqGridHelper.getSelectedRowIds( "{0}_Grid".format(controles.Tablas.PendientesDePago.Id), true);
            for (var i = 0; i < ids.length; i++)
            {
                var idPago  = Helpers.jqGridHelper.getGridRowCellValue("{0}_Grid".format(controles.Tablas.PendientesDePago.Id), ids[i], "IdPago");
                idsPagos.push( idPago );
            }

            if ( idsPagos.length == 0 )
            {
                mostrarNotificacion(_notifications.warning, "No se ha seleccionado ningún Pago.", false);
                return;
            }

            crearPlanillaDePagoActores( { "idsPagos" : idsPagos.join() } );
        }
        function generarPlanillaPagoStaff()
        {
            var idsPagos = new Array();            
            var ids = Helpers.jqGridHelper.getSelectedRowIds( "{0}_Grid".format(controles.Tablas.PendientesDePago.Id), true);
            for (var i = 0; i < ids.length; i++)
            {
                var idPago  = Helpers.jqGridHelper.getGridRowCellValue("{0}_Grid".format(controles.Tablas.PendientesDePago.Id), ids[i], "IdPago");
                idsPagos.push( idPago );
            }

            if ( idsPagos.length == 0 )
            {
                mostrarNotificacion(_notifications.warning, "No se ha seleccionado ningún Pago.", false);
                return;
            }

            crearPlanillaDePagoStaff( { "idsPagos" : idsPagos.join() } );
        }
        function calcularPeriodos()
        {
            var fechaActual   = Helpers.DateTimeHelper.GetCurrentDate();
            var fechaAnterior = new Date(fechaActual);
                fechaAnterior.setMonth(fechaActual.getMonth() - 1);

            obtenerPeriodo(_periodoActual, fechaActual);
            obtenerPeriodo(_periodoAnterior, fechaAnterior);

            //var desde = Helpers.DateTimeHelper.FormatDate(_periodoAnterior[0], 'dd/mm/yy');
            //var hasta = Helpers.DateTimeHelper.FormatDate(_periodoActual[1], 'dd/mm/yy');

            $("#{0}".format(controles.Filtro.PeriodoDesde)).datepicker("setDate", Helpers.DateTimeHelper.ConvertToDate(_periodoAnterior[0]));
            $("#{0}".format(controles.Filtro.PeriodoHasta)).datepicker("setDate", Helpers.DateTimeHelper.ConvertToDate(_periodoActual[0]));
        }
        function obtenerPeriodo(periodo, fecha)
        {
            //posiciono la fecha en el 1° día del mes..
            //fecha.setDate( 1 );
            Helpers.DateTimeHelper.AddUnits(fecha, Helpers.DateTimeHelper.DateUnits.Day, 1);

            var inicio = Helpers.DateTimeHelper.GetDateParts(fecha);

            //sumo 1 mes a la fecha actual..
            //fecha.setMonth( fecha.getMonth() + 1 );
            Helpers.DateTimeHelper.AddUnits(fecha, Helpers.DateTimeHelper.DateUnits.Month, 1);

            //..y le resto 1 día para posicionarme en el último día del mes..
            //fecha.setDate( fecha.getDate() - 1);
            Helpers.DateTimeHelper.AddUnits(fecha, Helpers.DateTimeHelper.DateUnits.Day, -1);

            var final = Helpers.DateTimeHelper.GetDateParts(fecha);

            periodo[0] = inicio.Year + "-" + inicio.Month + "-" + inicio.Day;
            periodo[1] = final.Year + "-" + final.Month + "-" + final.Day;
        }
        function obtenerfechaUltimosMeses(meses)
        {
            var fechaCalculada  = Helpers.DateTimeHelper.AddUnits(Helpers.DateTimeHelper.GetCurrentDate(), Helpers.DateTimeHelper.DateUnits.Month, -meses);
                fechaCalculada  = Helpers.DateTimeHelper.GetDateParts(fechaCalculada);
            return fechaCalculada.Year + "-" + fechaCalculada.Month + "-" + fechaCalculada.Day;

        }
    </script>
    <!-- Fin de [$(document).ready] -->

    <!-- Grillas Pagos Guiones -->
    <script type="text/javascript" >
        function inicializarGrillaPagos(infoTabla, infoEstadoPago, onLoadFilters)
        {
            var esAdmin = validarPermisosAdmin(_CurrentUser.Tipo);
            var pagado  = infoTabla.Id == controles.Tablas.Pagados.Id;

            var colModel =
            [
                { name: 'Id',               index: 'Id',                    label: 'Id',                align: 'center', hidden: true,  search: false, editable: false, resizable: false, sortable: false, dataType: 'Int32' },
                { name: 'IdPago',           index: 'Pago.Id',               label: 'Id Pago',           align: 'center', hidden: true, search: false, editable: false, resizable: false, sortable: false, dataType: 'Int32' },
                { name: 'IdProyecto',       index: 'Guion.Proyecto.Id',     label: 'Id Proyecto',       align: 'center', hidden: true, search: false, editable: false, resizable: false, sortable: false, dataType: 'Int32' },
                { name: 'Proyecto',         index: 'Guion.Proyecto.Nombre', label: 'Proyecto',          align: 'center', hidden: true, search: false, editable: false, resizable: false, sortable: false, dataType: 'String' , },
                { name: 'IdGuion',          index: 'Guion.Id',              label: 'Id Guión',          align: 'center', hidden: true, search: false, editable: false, resizable: false, sortable: false, dataType: 'Int32' },
                { name: 'IdEstadoGuion',    index: 'Guion.Estado.Id',       label: 'Id Estado Guión',   align: 'center', hidden: true, search: false, editable: false, resizable: false, sortable: false, dataType: 'Int32' },
                { name: 'Reclamar',         index: 'Reclamar',              label: ' ',                 align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'String', width: 30 },
                { name: 'Episodio',         index: 'Guion.Episodio',        label: 'Ep.',               align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'Int32', width: 40  },
                { name: 'Titulo',           index: 'Guion.Titulo',          label: 'Título',            align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'String', width: 240 },
                { name: 'Proveedor',        index: 'Proveedor.Apellido',    label: 'Proveedor',         align: 'center', hidden: !esAdmin, search: false, editable: false, resizable: false, sortable: false, dataType: 'String', width: 150 },
                { name: 'IdProveedor',      index: 'Proveedor.Id',          label: 'Id Proveedor',      align: 'center', hidden: true, search: false, editable: false, resizable: false, sortable: false, dataType: 'Int32' },
                { name: 'TipoProveedor',    index: 'Proveedor.Tipo.Nombre', label: 'Rol',               align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'String', width: 100, formatter: jqGridFormatter_TipoUsuario },
                { name: 'Fecha',            index: 'Fecha',                 label: 'Fecha',             align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'DateTime', width: 80, formatter: jqGridFormatter_Fecha },
                
                { name: 'Loops',            index: 'Loops',                 label: 'Loops',             align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'Int32', width: 50 },
                { name: 'Canciones',        index: 'Canciones',             label: 'Canciones',         align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'Int32', width: 70 },
                { name: 'ImporteLoops',     index: 'ImporteLoops',          label: 'Loops',             align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'Double', width: 80, formatter: currencyFormatter, formatoptions: jqGridFormatter_Currency },
                { name: 'ImporteCanciones', index: 'ImporteCanciones',      label: 'Canciones',         align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'Double', width: 80, formatter: currencyFormatter, formatoptions: jqGridFormatter_Currency },
                { name: 'ImporteTotal',     index: 'ImporteTotal',          label: 'Total',             align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'Double', width: 80, formatter: currencyFormatter, formatoptions: jqGridFormatter_Currency },
                
                //{ name: 'IdEstadoPago',     index: 'Estado.Id',             label: 'Id Estado Pago',    align: 'center', hidden: true, search: false, editable: false, resizable: false, sortable: false, dataType: 'Int32' },
                //{ name: 'EstadoPago',       index: 'Estado.Nombre',         label: 'Pago',              align: 'center', hidden: false, search: true, editable: false, resizable: false, sortable: false, dataType: 'String', width: 180 },
                //{ name: 'FechaPago',        index: 'FechaPago',             label: 'Fecha',             align: 'center', hidden: false, search: false, editable: false, resizable: false, sortable: false, dataType: 'DateTime?', width: 140, formatter: fechaFormatter },
                { name: 'MedioPago',        index: 'MedioPago',             label: 'Medio de Pago',     align: 'center', hidden: !pagado, search: false,   editable: false, resizable: false, sortable: false,   dataType: 'String', width: 130, formatter: jqGridFormatter_MedioPago },
                { name: 'IdMedioPago',      index: 'IdMedioPago',           label: 'Id Medio Pago',     align: 'center', hidden: true,  search: false,  editable: false, resizable: false, sortable: false,   dataType: 'Int32' }
            ];

            var fnOnLoadComplete                = overloadFunction(grillaPagos_OnLoadComplete, infoTabla, infoEstadoPago);

            var gridOpts                        = Helpers.jqGridHelper.createGridObject();
                gridOpts.IdGrid                 = "{0}_Grid".format(infoTabla.Id);
                gridOpts.IdPager                = "{0}_GridPager".format(infoTabla.Id);
                gridOpts.IdColModel             = "{0}_GridColModel".format(infoTabla.Id);
                gridOpts.ColModel               = colModel;
                gridOpts.Width                  = 1150;
                gridOpts.Height                 = _GridInfo.Defaults.Height / 2;
                gridOpts.Title                  = setGridTitle("Guiones", infoTabla.Title);
                gridOpts.DefaultSortColumn      = "Fecha"; //"Guion.Proyecto.Id"
                gridOpts.DefaultSortOrder       = "desc"; //"asc"
                gridOpts.PageSizeList           = [5, 10, 20, 30, 50, 100, 300, 500];
                gridOpts.DefaultPageSize        = 300; //_GridInfo.Defaults.PageSize;
            /* jqGrid Properties */
                gridOpts.AutoWidth              = false;
                gridOpts.ShrinkToFit            = false;
                gridOpts.LoadFilters            = onLoadFilters;
                gridOpts.LoadFiltersOnSearch    = true;
                gridOpts.OnLoadComplete         = fnOnLoadComplete;
                gridOpts.EditMode               = Helpers.jqGridHelper.EditMode.Modal;
            /* jqGrid Instance Urls & Params */
                gridOpts.UrlGet                 = "obtenerPagosGuiones";
            /* jqGrid Pager Buttons */
                gridOpts.ShowSearch             = false;
                gridOpts.ShowRefresh            = false;
                //gridOpts.GroupedRowsHeaderStyles      = { color: "blue", background: "lightcyan" };
                //gridOpts.GroupedColumnsHeaderStyles   = { "font-style": "italic" };

                gridOpts.MultiSelect            = setMultiSelect(infoTabla.Id);

            Helpers.jqGridHelper.setGridOpts(gridOpts);

            Helpers.jqGridHelper.groupRows("{0}_Grid".format(infoTabla.Id), "Proyecto", '<span class="rowGroupHeader" ></span>');
     
            Helpers.jqGridHelper.groupColumns("{0}_Grid".format(infoTabla.Id), [ { startColumnName: 'ImporteLoops', numberOfColumns: 3, titleText: 'Importes' } ]);
        }
        function setMultiSelect(idTabla)
        {
            var esAdmin = validarPermisosAdmin(_CurrentUser.Tipo);
            if ( idTabla == controles.Tablas.PendientesDePago.Id && esAdmin )
                return true;
            else
                return false;
        }
        function currencyFormatter(cellValue, options, rowObject)
        {
            processGroupSummaryInfo(cellValue, options, rowObject);
            return Helpers.NumericHelper.Formatting.formatCurrency(cellValue);
        }
        function processGroupSummaryInfo(cellValue, options, rowObject)
        {
            var idTabla     = options.gid;
            var idFila      = options.rowId;
            var idProyecto  = rowObject[2];
            var proyecto    = rowObject[3];
            var idGuion     = rowObject[4];
            var episodio    = rowObject[7];
            var importe     = rowObject[17];
            
            var proyectosInfo = null;
            if ( idTabla == "{0}_Grid".format(controles.Tablas.PendientesDePago.Id) )
                proyectosInfo = _proyectosPendientes;
            if ( idTabla == "{0}_Grid".format(controles.Tablas.Pagados.Id) )
                proyectosInfo = _proyectosPagados;

            var indice = proyectosInfo.length;
            var indiceProyecto = -1;

            var infoProyecto = {}

            if (proyectosInfo.length == 0 || idProyecto != proyectosInfo[indice - 1].Id)
            {
                indiceProyecto = indice;
                infoProyecto = { Id: -1, Nombre: "", CantidadPagos: 0, ImporteTotal: 0, Episodios: new Array(), RowIds: new Array() };
            }
            else
            {
                indiceProyecto = indice - 1;
                infoProyecto = proyectosInfo[indiceProyecto];
            }

            if ( !infoProyecto.RowIds.contains(idFila) )
            {
                infoProyecto.Id             = idProyecto;
                infoProyecto.Nombre         = proyecto;
                infoProyecto.CantidadPagos += 1;
                infoProyecto.ImporteTotal  += importe;
                infoProyecto.RowIds.push(idFila);

                if ( !infoProyecto.Episodios.contains(idGuion) )
                    infoProyecto.Episodios.push(idGuion);

                if (idTabla == "{0}_Grid".format(controles.Tablas.PendientesDePago.Id))
                    _proyectosPendientes[indiceProyecto] = infoProyecto;
                if (idTabla == "{0}_Grid".format(controles.Tablas.Pagados.Id))
                    _proyectosPagados[indiceProyecto] = infoProyecto;
            }

            return cellValue;
        }
        function grillaPagos_OnLoadComplete(infoTabla, infoEstadoPago)
        {
            var groupHeaderSummaryFormat = "<b>{0}</b> - Pagos: <b>{1}</b> - Episodios: <b>{2}</b> - Importe total: <b>{3}</b>";

            var proyectosInfo = null;
            if (infoTabla.Id == controles.Tablas.PendientesDePago.Id)
            {
                proyectosInfo = _proyectosPendientes;
                controles.Tablas.PendientesDePago.LoadComplete = true;
            }
                
            if (infoTabla.Id == controles.Tablas.Pagados.Id)
            {
                proyectosInfo = _proyectosPagados;
                controles.Tablas.Pagados.LoadComplete = true;
            }
            
            if (proyectosInfo == null)
                return;

            for (var i = 0; i < proyectosInfo.length; i++)
            {
                var infoProyecto = proyectosInfo[i];
                var text = groupHeaderSummaryFormat.format(infoProyecto.Nombre, infoProyecto.CantidadPagos, infoProyecto.Episodios.length, Helpers.NumericHelper.Formatting.formatCurrency(infoProyecto.ImporteTotal));
                Helpers.jqGridHelper.setRowGroupHeaderText("{0}_Grid".format(infoTabla.Id), i, text);
            }

            grillaPagos_AgregarHandlersBotones(infoTabla, infoEstadoPago);
            
            if (controles.Tablas.PendientesDePago.LoadComplete && controles.Tablas.Pagados.LoadComplete)
                createAccordion("pnlGrillas", 0, null, onCreateAccordionFn);

            Helpers.jqGridHelper.expandAllRowGroups(infoTabla.Id, false);
        }
        function onCreateAccordionFn(event, ui)
        {
            Helpers.jqGridHelper.setWidth("{0}_Grid".format(controles.Tablas.PendientesDePago.Id), "90%");
            Helpers.jqGridHelper.setWidth("{0}_Grid".format(controles.Tablas.Pagados.Id), "90%");
        }
        function grillaPagos_AgregarHandlersBotones(infoTabla, infoEstadoPago)
        {
            var estadoPagoNombre = infoEstadoPago.Nombre.replaceAll(" ", "_");
            $('.btnGenerarReclamoGuion_{0}'.format(estadoPagoNombre)).click
            (
                function()
                {
                    //var idPago = $(this).attr("id").replace("btnGenerarReclamoGuion_{0}_".format(estadoPagoNombre), "");
                    var btn = $(this);
                    var col = btn.parent();
                    var row = col.parent();
                    var rowId = row.attr("id");
                    generarReclamoGuion(rowId, "{0}_Grid".format(infoTabla.Id));
                }
            );
            mostrarTooltip('.btnGenerarReclamoGuion_{0}'.format(estadoPagoNombre), "Generar Reclamo");

            var botonesEditarFacturacion = "#{0}_Grid .btnEditarFacturacion".format(infoTabla.Id);
            $(botonesEditarFacturacion).attr("title", "");
            $(botonesEditarFacturacion).click
            (
                function ()
                {
                    var idProyecto = $(this).attr("id").replace("btnEditarFacturacion_", "");
                    verFacturacion({ idProyecto: idProyecto });
                }
            );
            mostrarTooltip(botonesEditarFacturacion, "Ver Facturación del Proyecto");

            $('#{0}_Grid .btnEditarGuion'.format(infoTabla.Id)).click
            (
                function () {
                    var idGuion = $(this).attr("id").replace("btnEditarGuion_", "");
                    editarGuion(idGuion);
                }
            );
            mostrarTooltip('#{0}_Grid .btnEditarGuion'.format(infoTabla.Id), "Ver detalle del Guión");

            $('#{0}_Grid .btnVerProveedor'.format(infoTabla.Id)).click
            (
                function () {
                    var idProveedor = $(this).attr("id").replace("btnVerProveedor_", "");
                    editarUsuario(idProveedor);
                }
            );
            mostrarTooltip('#{0}_Grid .btnVerProveedor'.format(infoTabla.Id), "Ver detalle del Proveedor");
        }
        function grillaPagosGuionesPendientesDePago_LoadFilters() {

            _proyectosPendientes = [];

            var rules = [];

                //var condicionPeriodo =
                //    {
                //        condition: "AND",
                //        set:
                //        [
                //            { match: "AND", field: "Fecha", op: "ge", data: _periodoAnterior[0] },
                //            { match: "AND", field: "Fecha", op: "le", data: _periodoActual[1] }
                //        ]
                //    };
                //rules.push(condicionPeriodo);

                var condicionProyectosInactivos =
                    {
                        condition: "AND",
                        set:
                        [
                            { match: "AND", field: "Guion.Proyecto.Activo", op: "eq", data: 1 }
                        ]
                    };
                rules.push(condicionProyectosInactivos);

                if (!isEmpty(Framework.Page.Parameters.idProveedor)) {
                    var condicionProveedor =
                        {
                            condition: "AND",
                            set:
                            [
                                { match: "AND", field: "Proveedor.Id", op: "eq", data: Framework.Page.Parameters.idProveedor }
                            ]
                        };
                    rules.push(condicionProveedor);
                }

                //if ( validarPermisosAdmin(_CurrentUser.Tipo) )
                //{
                    var condicionEstadoGuion =
                        {
                            condition: "AND",
                            set:
                            [
                                { match: "AND", field: "Guion.Estado.Id", op: "eq", data: _EstadosGuion.FINALIZADO.Id }
                            ]
                        };
                    rules.push(condicionEstadoGuion);
                //}

                var condicionEstadoPago =
                    {
                        condition: "AND",
                        set:
                        [
                            { match: "AND", field: "Estado.Id", op: "eq", data: _EstadosPago.PENDIENTE_DE_PAGO.Id }
                        ]
                    };
                rules.push(condicionEstadoPago);

                if (!isEmpty(Framework.Page.Parameters.idProyecto))
                {
                    var condicionProyecto =
                        {
                            condition: "AND",
                            set:
                            [
                                { match: "AND", field: "Guion.Proyecto.Id", op: "eq", data: Framework.Page.Parameters.idProyecto }
                            ]
                        };
                    rules.push(condicionProyecto);
                }

                return JSON.stringify(rules);
            }
        function grillaPagosGuionesPagados_LoadFilters() {
            var rules = [];

            _proyectosPagados = [];

            //var condicionPeriodo =
            //    {
            //        condition: "AND",
            //        set:
            //        [
            //            { match: "AND", field: "Fecha", op: "ge", data: _periodoAnterior[0] },
            //            { match: "AND", field: "Fecha", op: "le", data: _periodoActual[1] }
            //        ]
            //    };
            //rules.push(condicionPeriodo);

            var condicionProyectosInactivos =
                {
                    condition: "AND",
                    set:
                    [
                        { match: "AND", field: "Guion.Proyecto.Activo", op: "eq", data: 1 }
                    ]
                };
            rules.push(condicionProyectosInactivos);

            var condicionPeriodo =
                {
                    condition: "AND",
                    set:
                    [
                        { match: "AND", field: "FechaPago", op: "ge", data: obtenerfechaUltimosMeses(3) }
                    ]
                };
            rules.push(condicionPeriodo);

            if (!isEmpty(Framework.Page.Parameters.idProveedor)) {
                var condicionProveedor =
                    {
                        condition: "AND",
                        set:
                        [
                            { match: "AND", field: "Proveedor.Id", op: "eq", data: Framework.Page.Parameters.idProveedor }
                        ]
                    };
                rules.push(condicionProveedor);
            }

            var condicionEstadoGuion =
                {
                    condition: "AND",
                    set:
                    [
                        { match: "AND", field: "Guion.Estado.Id", op: "eq", data: _EstadosGuion.FINALIZADO.Id }
                    ]
                };
            rules.push(condicionEstadoGuion);

            var condicionEstadoPago =
                {
                    condition: "AND",
                    set:
                    [
                        { match: "AND", field: "Estado.Id", op: "eq", data: _EstadosPago.PAGADO.Id }
                    ]
                };
            rules.push(condicionEstadoPago);

            if (!isEmpty(Framework.Page.Parameters.idProyecto)) {
                var condicionProyecto =
                    {
                        condition: "AND",
                        set:
                        [
                            { match: "AND", field: "Guion.Proyecto.Id", op: "eq", data: Framework.Page.Parameters.idProyecto }
                        ]
                    };
                rules.push(condicionProyecto);
            }

            return JSON.stringify(rules);
        }
    </script>
    <!-- Fin de [Grillas Pagos Guiones] -->

    <!-- Diálogo Reclamos -->
    <script type="text/javascript" >
        function generarReclamoGuion(rowId, idTabla)
        {
            abrirDialogoReclamo(rowId, idTabla);
        }
        function inicializarDialogoReclamo()
        {
            var dialogReclamoOpts =
            {
                title: controles.Dialogos.Reclamo.Title.toUpperCase(),
                width: 600,
                height: 420
            };
            Helpers.DialogHelper.initializeDialog(controles.Dialogos.Reclamo.Id, dialogReclamoOpts);

            $("#{0}".format(controles.Dialogos.Reclamo.btnEnviar)).click(function () { enviarReclamo(); });
        }
        function abrirDialogoReclamo(rowId, idTabla)
        {
            var titulo = Helpers.jqGridHelper.getGridRowCellValue(idTabla, rowId, "Titulo");
                titulo = $(titulo).text();
            var episodio = Helpers.jqGridHelper.getGridRowCellValue(idTabla, rowId, "Episodio");
            var idPago = Helpers.jqGridHelper.getGridRowCellValue(idTabla, rowId, "IdPago");
            var idGuion = Helpers.jqGridHelper.getGridRowCellValue(idTabla, rowId, "IdGuion");

            $("#{0}".format(controles.Dialogos.Reclamo.IdPago)).val(idPago);
            $("#{0}".format(controles.Dialogos.Reclamo.IdGuion)).val(idGuion);
            $("#{0}".format(controles.Dialogos.Reclamo.Guion)).val(titulo + " - Ep. " + episodio);
            $("#{0}".format(controles.Dialogos.Reclamo.Asunto)).val("Reclamo de " + _CurrentUser.Nombre + " " + _CurrentUser.Apellido);
            $("#{0}".format(controles.Dialogos.Reclamo.Descripcion)).val("");
            
            Helpers.DialogHelper.openDialog(controles.Dialogos.Reclamo.Id);
        }
        function cerrarDialogoReclamo() {
            Helpers.DialogHelper.closeDialog(controles.Dialogos.Reclamo.Id);
        }
        function validarEnviarReclamo(parametros) {
            var errores = [];

            validarDatosReclamo(parametros, errores);

            if (errores.length > 0)
                return false;
            else
                return true;
        }
        function validarDatosReclamo(parametros, errores) {
            if (isEmpty(parametros.descripcion))
                registrarError($("#{0}".format(controles.Dialogos.Reclamo.Descripcion)), errores);
        }
        function enviarReclamo()
        {
            var parametros =
            {
                idPago      : $("#{0}".format(controles.Dialogos.Reclamo.IdPago)).val(),
                idEmisor    : _CurrentUser.Id,
                descripcion : $("#{0}".format(controles.Dialogos.Reclamo.Descripcion)).val()
            };
  
            if ( !validarEnviarReclamo(parametros) )
                return;

            cerrarDialogoReclamo();

            Site.Messages.showLoadingMessage("Enviando reclamo.. Por favor, espere");

            Helpers.AJAXHelper.invoke("enviarReclamo", JSON.stringify(parametros).replace(/'/g, "\\'"), enviarReclamo_Respuesta, null);
        }
        function enviarReclamo_Respuesta(datos)
        {
            Site.Messages.hideLoadingMessage();

            var tipoNotificacion = null;
            var forzarCierre = false;

            var respuestaInfo = jQuery.parseJSON(datos.d);
            if (respuestaInfo.Resultado)
            {
                //var reclamoInfo = respuestaInfo.Valor;
                tipoNotificacion = _notifications.success;
                forzarCierre = false;
            }
            else
            {
                tipoNotificacion = _notifications.error;
                forzarCierre = true;
            }

            mostrarNotificacion(tipoNotificacion, respuestaInfo.Mensaje, forzarCierre);
        }
    </script>
    <!-- Fin de [Diálogo Reclamos] -->    

    <!--HTML-->
    <div id="content" style="margin:0 auto; width:90%;" >

        <br />

        <!-- Período -->
        <div style="display:none" >
            <label style="font-weight:bold" >Período:&nbsp;&nbsp;</label>
            Desde&nbsp;<input id="txtPeriodo_Desde" type="text" style="width:80px; text-align:center" />
            Hasta&nbsp;<input id="txtPeriodo_Hasta" type="text" style="width:80px; text-align:center" />
            <!--<label id="lblPeriodoActual" ></label>-->
            <br />
        </div>
        
        <div id="pnlGrillas" >
        
            <h3 id="pnlGrillas_PendientesDePago" >PENDIENTES DE PAGO</h3>
                <div>
                <!-- Totales - PENDIENTES DE PAGO -->
                <div>
                    <span>
                        <label id="lblCantidadPagos_PendientesDePago" ></label>:&nbsp;&nbsp;
                        <input id="txtCantidadPagos_PendientesDePago" type="text" style="width:80px; text-align:center" class="disabled"  readonly="readonly" runat="server" />
                        
                    </span>
                    &nbsp;&nbsp;
                    <span>
                        <label id="lblTotalImporte_PendientesDePago" ></label>:&nbsp;&nbsp;
                        <input id="txtTotalImporte_PendientesDePago" type="text" style="width:160px; text-align:center" class="disabled"  readonly="readonly" runat="server" />
                    </span>
                    &nbsp;&nbsp;
                    <span style="display:none" >
                        <img src="Images/16x16/planilla.png" alt="Generar Planilla de Pago - Actores" />
                        <a href="#" id="btnGenerarPlanillaPagoActores" class="link" >Generar Planilla de Pago - Actores</a>
                    </span>
                    &nbsp;&nbsp;
                    <span style="display:none" >
                        <img src="Images/16x16/planilla.png" alt="Generar Planilla de Pago - Staff" />
                        <a href="#" id="btnGenerarPlanillaPagoStaff" class="link" >Generar Planilla de Pago - Staff</a>
                    </span>
                    <br />
                </div>
                <!-- Grilla Guiones PENDIENTES DE PAGO -->
                <div class="jqGridContainer" >
                    <table id="tblGuionesPendientesDePago_Grid" ></table>
                    <div id="tblGuionesPendientesDePago_GridPager" ></div>
                    <input type="hidden" id="tblGuionesPendientesDePago_GridColModel" />      
                </div>
            </div>

            <h3 id="pnlGrillas_Pagados" >PAGADOS</h3>
                <div>
                <!-- Totales - PAGADOS -->
                <div>
                    <label id="lblCantidadPagos_Pagados" ></label>:&nbsp;&nbsp;
                    <input id="txtCantidadPagos_Pagados" type="text" style="width:80px; text-align:center" class="disabled"  readonly="readonly" runat="server" />
                    <label id="lblTotalImporte_Pagados" ></label>:&nbsp;&nbsp;
                    <input id="txtTotalImporte_Pagados" type="text" style="width:160px; text-align:center" class="disabled"  readonly="readonly" runat="server" />
                </div>
                <!-- Grilla Guiones PAGADOS -->
                <div class="jqGridContainer" >
                    <table id="tblGuionesPagados_Grid" ></table>
                    <div id="tblGuionesPagados_GridPager" ></div>
                    <input type="hidden" id="tblGuionesPagados_GridColModel" />      
                </div>
            </div>

        </div>  
                
        <br />

        <!-- Diálogo Reclamos -->
        <div id="dialogEnviarReclamo" style="display:none" >
            <input id="txtDialogoReclamo_IdPago" type="text" style="display:none" />
            <input id="txtDialogoReclamo_IdGuion" type="text" style="display:none" />
            <label>Asunto:</label><br />
            <input id="txtDialogoReclamo_Asunto" type="text" readonly="readonly" class="disabled" /><br />
            <br />
            <label>Guión:</label><br />
            <input id="txtDialogoReclamo_Guion" type="text" readonly="readonly" class="disabled" /><br />
            <br />
            <label>Mensaje:</label><br />
            <div style="width:98%" >
                <textarea id="txtDialogoReclamo_Descripcion" rows="10" cols="1" ></textarea>
            </div>
            <br />
            <div style="float:right" >
                <div id="btnEnviarReclamo" class="botonAccion" >
                    <img src="Images/16x16/email.png" alt="Enviar" />
                    <label>Enviar</label>
                </div>
            </div>
        </div>        

        <span style="display:none">
            <select id="selEstadoPago" multiple="true" style="width:99%" runat="server" ></select>
        </span>

    </div>

</asp:Content>